package com.own.business.sync.trigger.base.util;

import com.own.business.sync.trigger.base.common.TypeConstantEnum;
import com.own.business.sync.trigger.base.config.SyncTriggerMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * SyncTriggerStaticUtil
 *
 * @author chenxueli
 * @date 2024-01-08 16:03:00
 */
@Slf4j
@Component
public class SyncTriggerStaticUtil {

    public static SyncTriggerStaticUtil INSTANCE;

    @Resource
    private SyncTriggerMethod syncTriggerMethod;

    /**
     * 保存信息
     *
     * @param targetId   源数据id
     * @param type       操作类型 TypeConstantEnum
     * @param moduleName 操作模块
     */
    public static void add(Long targetId, TypeConstantEnum type, String moduleName) {
        add(targetId, type, moduleName, null, null);
    }

    /**
     * 保存信息
     *
     * @param targetId   源数据id
     * @param type       操作类型 TypeConstantEnum
     * @param moduleName 操作模块
     * @param oldStatus  旧状态
     * @param newStatus  新状态
     */
    public static void add(Long targetId, TypeConstantEnum type, String moduleName, Integer oldStatus, Integer newStatus) {
        add(targetId, type.getType(), moduleName, oldStatus, newStatus);
    }

    /**
     * 保存信息
     *
     * @param targetId   源数据id
     * @param type       操作类型 1=插入 2=修改 3=删除
     * @param moduleName 操作模块
     */
    public static void add(Long targetId, int type, String moduleName) {
        add(targetId, type, moduleName, null, null);
    }

    /**
     * 保存信息
     *
     * @param targetId   源数据id
     * @param type       操作类型 1=插入 2=修改 3=删除
     * @param moduleName 操作模块
     * @param oldStatus  旧状态
     * @param newStatus  新状态
     */
    public static void add(Long targetId, int type, String moduleName, Integer oldStatus, Integer newStatus) {
        SyncTriggerStaticUtil.INSTANCE.syncTriggerMethod.add(targetId, type, moduleName, oldStatus, newStatus);
    }

    @PostConstruct
    public void init() {
        INSTANCE = this;
    }

}
